package ch.il07.converter.business;

import java.util.List;

import ch.il07.converter.persistence.entities.Measurand;

public interface MeasurandAction extends Service {
	/**
	 * Adds a new private measurand.
	 * {UseCase "Messgrösse erstellen"}
	 * @param owner Measurandowner
	 * @param name Name of the measurand. Example: Geschwindigkeit
	 * @param baseUnitName Default unit name to use. Example: Meter (Divisor: 1, Shift: 0)
	 * @return True when measurand was successful created
	 */
	public boolean addPrivateMeasurand(String owner, String measurandName, String measurandDescription, String baseUnitName, String symbol);
	
	/**
	 * Adds a new public measurand.
	 * {UseCase "Messgrösse erstellen" and "Globale Masseinheit erstellen"}
	 * @param owner Measurandowner
	 * @param name Name of the measurand. Example: Geschwindigkeit
	 * @param baseUnitName Default unit name to use. Example: Meter (Divisor: 1, Shift: 0)
	 * @return True when measurand was successful created
	 */
	public boolean addPublicMeasurand(String measurandName, String measurandDescription, String baseUnitName, String symbol);
	
	/**
	 * Deletes a private measurand.
	 * {UseCase "Messgrösse löschen"}
	 * @param owner Measurand belongs to this owner
	 * @param measurand Measurand to delete
	 * @return True when measurand was deleted, else false
	 */
	public boolean deletePrivateMeasurand(String owner, String measurand);
	
	/**
	 * Deletes a public measurand.
	 * {UseCase "Messgrösse löschen" and "Globale Messgrösse löschen"}
	 * @param measurand Unit belongs to this measurand
	 * @return True if unit was deleted, else false
	 */
	public boolean deletePublicMeasurand(String measurand);
	
	/**
	 * Returns a list of all public measurands.
	 * @return List with names of the public measurands
	 */
	public List<Measurand> getAllPublicMeasurands();
	
	/**
	 * Returns a list of all private measurands.
	 * @param owner Owner of the measurands
	 * @return List with names of the private measurands
	 */
	public List<Measurand> getAllPrivateMeasurands(String owner);
	
	/**
	 *
	 */ 
	public boolean editMeasurand(String oldOwner, String owner, String oldName, String name, String description);
}